<?php


class MijnAuto {
    private $_stappen = array(
        array('stap'=>'Model','klasse'=>'\fabriek\auto\Model','obj'=>'_model'),
        array('stap'=>'Motor','klasse'=>'\fabriek\auto\Motor','obj'=>'_motor'),
        array('stap'=>'Velg','klasse'=>'\fabriek\auto\Velgen','obj'=>'_velgen'),
        array('stap'=>'BodyPanel','klasse'=>'\fabriek\verf\BodyPanel','obj'=>'_bodyPanel'),
        array('stap'=>'Stripe','klasse'=>'\fabriek\verf\Stripe','obj'=>'_stripe'),
        array('stap'=>'Interieur','klasse'=>'\fabriek\binnen\Interieur','obj'=>'_interieur')
    );
    private $_model = null;
    private $_motor = null;
    private $_velgen = null;
    private $_interieur = null;
    private $_bodyPanel = null;
    private $_stripe = null;
    
    public function __construct() {
        session_start();
        
        if (!isset($_SESSION['stap'])) {
            $_SESSION['stap'] = 0;
        }        
        
        // -- vorige
        // -- volgende
        
        foreach($this->_stappen as $stap) {
            if (!isset($_SESSION[$stap['stap']])) {
                $_SESSION[$stap['stap']] = '';
            }
            $this->$stap['obj'] = new $stap['klasse']();
            $this->$stap['obj']->zet($_SESSION[$stap['stap']]);
        }
        if(filter_input(INPUT_POST, 'vorige')){
            $_SESSION['stap']--;
            if($_SESSION['stap']<0)
             $_SESSION['stap']=0;
        }elseif(filter_input(INPUT_POST, 'volgende')){
            $_SESSION['stap']++;
            if($_SESSION['stap']>=  count($this->_stappen))
             $_SESSION['stap']=  count($this->_stappen)-1;
        }elseif($optie = filter_input(INPUT_POST, 'optie')){
            $obj = $this->_stappen[$_SESSION['stap']]['obj'];
            $obj = $this->$obj;
            $obj->zet($optie);
        }
    }
    
    public function samenvatting() {
        $html ='';
        $totaal = 0;
        
        foreach ($this->_stappen as $stap) {
            $tmp = $this->$stap['obj']->samenvatting();
            $optie = $tmp['optie'];
            $prijs = $tmp['prijs'];
            $totaal +=$prijs;
            $prijs = number_format((float)$prijs,2);
            $html.= <<<EOD
    <p>
        <span class="optie">{$optie}</span>
        <span class="prijs">&euro;{$prijs}</span>
    </p>           
EOD;
        }
        $totaal = number_format((float)$totaal,2);
         $html.= <<<EOD
   <hr> 
   <p>
        <span class="optieTotaal">Totaal</span>
        <span class="prijsTotaal">&euro;{$totaal}</span>
    </p>                        
EOD;
        return $html;
    }
    
    public function afbeelding() {
        //--
        if((int)$_SESSION['stap']==count($this->_stappen)-1){
            $int='toon';
            $ext = 'verberg';
        }else{
            $int ='verberg';
            $ext ='toon';
        }
        
        $html = '<img class="'.$ext.'" src="'.$this->_bodyPanel->afbeelding().'" id="afbBody">';
        $html .= '<img class="'.$ext.'" src="'.$this->_stripe->afbeelding().'" id="afbStripe">';
        $html .= '<img class="'.$ext.'" src="'.$this->_velgen->afbeelding().'" id="afbVelg">';
        $html .= '<img class="'.$int.'" src="'.$this->_interieur->afbeelding().'" id="afbInterieur">';
        return $html;
    }
    
    public function knoppen() {
        $vorige = ((int)$_SESSION['stap'] > 0)?'class="enable"':'class="disable" disabled="disabled"';
        $volgende = ((int)$_SESSION['stap'] < count($this->_stappen)-1)?'class="enable"':'class="disable" disabled="disabled"';
        
        return <<<EOD
<input type="submit" name="vorige" {$vorige} value="Vorige">
<input type="submit" name="volgende" {$volgende} value="Volgende">
EOD;
    }
    
    public function opties() {
        $stap = $_SESSION['stap'];
        $obj = $this->_stappen[$stap]['obj'];
        $obj = $this->$obj;
        return $obj->opties();
    }
}
